Spring Boot JPA হল একটি খুবই জনপ্রিয় ফিচার যা ডেটাবেস অপারেশন পরিচালনার জন্য স্প্রিং ডেটা জেপিএ (Spring Data JPA) ব্যবহার করে। CRUD (Create, Read, Update, Delete) অপারেশনগুলি ডেটাবেসের সঙ্গে কাজ করার জন্য খুবই মৌলিক এবং গুরুত্বপূর্ণ। Spring Boot JPA এর মাধ্যমে সহজেই CRUD অপারেশন সম্পন্ন করা যায়।
এখানে আমরা একটি Product মডেল তৈরি করব এবং Spring Boot JPA ব্যবহার করে CRUD অপারেশন বাস্তবায়ন করব।
Step 1: Maven ডিপেনডেন্সি যোগ করা
প্রথমে, আপনার pom.xml ফাইলে Spring Boot JPA এবং ডাটাবেস সংযোগের জন্য প্রয়োজনীয় ডিপেনডেন্সি যোগ করুন।
<dependencies>
<!-- Spring Boot Starter Web (For creating REST APIs) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Starter Data JPA -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- H2 Database (In-memory Database for Testing) -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Spring Boot Starter Test (For Unit Testing) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
এখানে, spring-boot-starter-data-jpa ডিপেনডেন্সি দ্বারা স্প্রিং ডেটা জেপিএ ব্যবহৃত হচ্ছে, এবং h2 ডাটাবেসকে রানটাইম ডাটাবেস হিসেবে ব্যবহার করা হচ্ছে। আপনি চাইলে mysql, postgresql বা অন্য ডাটাবেসও ব্যবহার করতে পারেন।
Step 2: application.properties কনফিগারেশন
ডাটাবেস কনফিগারেশন সেট করার জন্য application.properties ফাইল ব্যবহার করা হবে।
# H2 Database configuration
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
spring.h2.console.enabled=true
এখানে, H2 ডাটাবেস ব্যবহার করা হয়েছে এবং স্প্রিং অ্যাপ্লিকেশন চালু হলে ddl-auto=update ব্যবহার করে ডাটাবেসের স্কিমা আপডেট হবে।
Step 3: Entity তৈরি করা
স্প্রিং ডেটা জেপিএ ব্যবহার করতে, প্রথমে একটি Entity ক্লাস তৈরি করতে হবে যা ডাটাবেস টেবিলের সাথে মেলে। এখানে আমরা Product নামক একটি Entity ক্লাস তৈরি করব।
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Product {
@Id
private Long id;
private String name;
private double price;
// Constructors
public Product() {}
public Product(Long id, String name, double price) {
this.id = id;
this.name = name;
this.price = price;
}
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
এখানে, @Entity অ্যানোটেশনটি স্প্রিং ডেটা জেপিএকে জানায় যে এই ক্লাসটি একটি ডাটাবেস টেবিলের সাথে সম্পর্কিত। @Id অ্যানোটেশনটি id ফিল্ডকে প্রাইমারি কি হিসেবে চিহ্নিত করেছে।
Step 4: Repository Interface তৈরি করা
স্প্রিং ডেটা জেপিএ রেপোজিটরি ব্যবহারের মাধ্যমে আমরা সহজেই CRUD অপারেশন সম্পাদন করতে পারি। JpaRepository ইন্টারফেসটি স্প্রিং ডেটা জেপিএর মধ্যে CRUD অপারেশনগুলির জন্য বিল্ট-ইন মেথড সরবরাহ করে।
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProductRepository extends JpaRepository<Product, Long> {
// Custom query methods (optional)
Product findByName(String name);
}
এখানে, ProductRepository ইন্টারফেসটি JpaRepository থেকে এক্সটেন্ড করেছে, যা স্প্রিং ডেটা জেপিএর পূর্বনির্ধারিত CRUD অপারেশনগুলির সাহায্য নিয়ে Product Entity এর সাথে ডাটাবেস অপারেশন করতে সক্ষম।
Step 5: Service Layer তৈরি করা
এখন, একটি Service Layer তৈরি করা হবে, যেখানে ডেটাবেস অপারেশনগুলো লজিকের সাথে একত্রিত হবে।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ProductService {
@Autowired
private ProductRepository productRepository;
// Create or Update Product
public Product saveProduct(Product product) {
return productRepository.save(product);
}
// Get Product by ID
public Product getProductById(Long id) {
return productRepository.findById(id).orElse(null);
}
// Get All Products
public List<Product> getAllProducts() {
return productRepository.findAll();
}
// Delete Product by ID
public void deleteProduct(Long id) {
productRepository.deleteById(id);
}
}
এখানে, ProductService ক্লাসে CRUD অপারেশনগুলো পদ্ধতিগতভাবে একত্রিত করা হয়েছে, যা ProductRepository এর মাধ্যমে ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করবে।
Step 6: Controller Layer তৈরি করা
এখন একটি Controller Layer তৈরি করা হবে, যেখানে RESTful API এর মাধ্যমে ক্লায়েন্টরা CRUD অপারেশনগুলো করতে পারবে।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/products")
public class ProductController {
@Autowired
private ProductService productService;
// Create or Update Product
@PostMapping
public Product addProduct(@RequestBody Product product) {
return productService.saveProduct(product);
}
// Get Product by ID
@GetMapping("/{id}")
public Product getProduct(@PathVariable Long id) {
return productService.getProductById(id);
}
// Get All Products
@GetMapping
public List<Product> getAllProducts() {
return productService.getAllProducts();
}
// Delete Product by ID
@DeleteMapping("/{id}")
public void deleteProduct(@PathVariable Long id) {
productService.deleteProduct(id);
}
}
এখানে, ProductController ক্লাসটি RESTful API তৈরি করেছে যেখানে:
- POST /products: নতুন প্রোডাক্ট যোগ করা হয়।
- GET /products/{id}: একটি নির্দিষ্ট প্রোডাক্ট ID দ্বারা পাওয়া যায়।
- GET /products: সমস্ত প্রোডাক্টের তালিকা পাওয়া যায়।
- DELETE /products/{id}: একটি নির্দিষ্ট প্রোডাক্ট ID দ্বারা ডিলিট করা হয়।
Step 7: Main Class
এখন, MainApp ক্লাস ব্যবহার করে স্প্রিং বুট অ্যাপ্লিকেশন চালানো হবে।
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MainApp {
public static void main(String[] args) {
SpringApplication.run(MainApp.class, args);
}
}
সারাংশ
স্প্রিং বুট জেপিএ (Spring Boot JPA) ব্যবহার করে CRUD অপারেশন খুব সহজে সম্পাদন করা যায়। স্প্রিং ডেটা জেপিএ JpaRepository ইন্টারফেসের মাধ্যমে CRUD অপারেশনগুলো প্রদান করে, যা ডাটাবেসের সাথে যোগাযোগের জন্য অত্যন্ত কার্যকর। আমরা @Entity, @Repository, @Service, এবং @RestController এর মাধ্যমে একটি সম্পূর্ণ CRUD অ্যাপ্লিকেশন তৈরি করেছি, যা ডাটাবেসে ডেটা তৈরি, পড়া, আপডেট এবং মুছে ফেলার কাজ করে।
Spring Boot JPA এর মাধ্যমে আপনি দ্রুত ডেটাবেস অপারেশন করতে পারবেন এবং আপনার অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করতে পারবেন।
Read more